// @ts-ignore
import * as jsonSourceMap from "json-source-map";

export function getNewLineNumber(
  data: Array<any>,
  path: string
): number | null {
  try {
    // 1. 将所有content合并为完整的JSON字符串
    const jsonStr = data.map((item) => item.content).join("\n");

    // 2. 解析JSON并生成source map
    const parsed = jsonSourceMap.parse(jsonStr);

    // 3. 将用户路径转换为JSON指针（如"elements.0.editable" -> "/elements/0/editable"）
    const pointer = "/" + path.split(".").join("/");

    // 4. 获取指针对应的位置信息
    const pointerInfo = parsed.pointers[pointer];
    if (!pointerInfo) {
      return null;
    }

    // 5. 获取键所在的行号（JSON字符串中的行号，从0开始）
    const jsonLine = pointerInfo.key.line;

    // 6. 映射到data数组中的对应元素的newLineNumber
    const dataItem = data[jsonLine];
    return dataItem ? dataItem.newLineNumber : null;
  } catch (error) {
    console.error("Error parsing JSON or generating source map:", error);
    return null;
  }
}
